// #include<iostream>
// #include<string>
// #include<regex>
// using namespace std;
//
// /**
//  *  正则表达式 构建一个正则字符串
//  *  构建一个regex对象
//  *  构建相关功能函数
//  *  regex_match
//  *  regex_search
//  *  regex_replace
//  *
//  *
//  *
//  */
// //基本用法 邮箱验证为例 \要变成双斜线
// void check_email() {
//
//     regex regex_object("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$");
//
//     string username;
//     while (true) {
//         cout << "Please enter your username: ";
//         cin >> username;
//         bool result = regex_match(username, regex_object);
//         if (result) {
//             cout << "Your username is successfully passed!" << endl;
//             break;
//         }else {
//             cout << "Your username is incorrect!" << endl;
//         }
//     }
// }
//
// void test_regex_match() {
//
//     //正则字符串构造正则对象
//     string str ="iLoveyou1314520";
//     regex str_regex("[a-z0-9]+");
//     if (regex_match(str, str_regex)) {
//         cout << "passed!" << endl;
//     }else {
//         cout << "failed!" << endl;
//     }
//     //带匹配规则的正则对象
//     regex object("[a-z0-9]+",regex_constants::icase);
//     if (regex_match(str, object)) {
//         cout << "passed!" << endl;
//     }else {
//         cout << "failed!" << endl;
//     }
//     //字符串直接当做正则
//     regex abc("iLoveyou131452");
//     if (regex_match(str, abc)) {
//         cout << "passed!" << endl;
//     }else {
//         cout << "failed!" << endl;
//     }
//     // \\1 \\2 前面已经匹配到的字符串
//     string test_string="xiaomei.12345.xiaomei.12345.";
//     regex num("([a-z]+\\.)([0-9]+\\.)([a-z]+\\.)([0-9]+\\.)");
//     if (regex_match(test_string, num)) {
//         cout << "passed!" << endl;
//     }else {
//         cout << "failed!" << endl;
//     }
//
//     regex nu1("([a-z]+\\.)([0-9]+\\.)(\\1)(\\2)");
//     if (regex_match(test_string, nu1)) {
//         cout << "passed!" << endl;
//     }else {
//         cout << "failed!" << endl;
//     }
// }
// //正则做截取
// void test_regex_search() {
//     //regex_search()类型
//     //1.传入参数
//     smatch result;
//     //基本用法 找到就结束了
//     string str ="iLoveyou1314520Missionyou520goodbye886";
//     bool flag = regex_search(str,result,regex("\\d+"));
//     if (flag) {
//         cout << "size" <<result.size() << endl;
//         cout <<  "str" << result.str() << endl;
//         cout << "prefix" << result.prefix() << endl;
//         cout << "suffix" << result.suffix() << endl;
//     }
//     //3. sregex_iterator 截取所有匹配的字符串
//     sregex_iterator end; //EOF结束条件
//     regex object("\\d+");
//     sregex_iterator start(str.begin(), str.end(), object);
//     while (start != end) {
//         cout << start->str() << endl;
//         start++;
//     }
//     sregex_token_iterator end_t;
//     //-1 表示不匹配 默认0 表示匹配
//     sregex_token_iterator sart_t(str.begin(), str.end(), object,-1);
//     while (sart_t != end_t) {
//         cout << sart_t->str() << endl;
//         sart_t++;
//     }
// }
// //正则替换
// void test_regex_replace() {
//     string str ="iLoveyou*******************1314*********************520*****x";
//     regex str_regex("\\*+");
//     cout << regex_replace(str,str_regex,"*") << endl;
//     //原来的字符串不变
//     cout << str << endl;
//
//     //替换规则
//     cout << "only one" << regex_replace(str,str_regex,"*",regex_constants::format_first_only) << endl;
//     cout << "no copy" << regex_replace(str,str_regex,"*",regex_constants::format_no_copy) << endl;
// }
// //简单模拟文字屏蔽
// void test() {
//     string object[3]={"m","s","y"};
//     while (true) {
//         string str;
//         cout << "input:";
//         cin >> str;
//         while (cin.get() != '\n');
//         int userkey = cin.get();
//         if (userkey == '\n') {
//             for (auto v:object) {
//                 regex regex_object(v);
//                 str = regex_replace(str,regex_object,"**");
//             }
//             cout << str << endl;
//         }
//     }
// }
//
//
//
//
// int main() {
//     // check_email();
//     // test_regex_match();
//     // test_regex_search();
//     // test_regex_replace();
//     test();
//     return 0;
// }